package com.jyu.work.controller;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jyu.common.result.PageResult;
import com.jyu.common.result.Result;
import com.jyu.pojo.entity.Product;
import com.jyu.work.service.IProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author guancheng
 * @since 2023-11-30
 */
@RestController
@RequestMapping("/product")
@CrossOrigin(origins = "http://127.0.0.1:5173")

public class ProductController {


    @Autowired
    private IProductService productService;

    /**
     * DeleteMapping注释表示该方法处理HTTP DELETE请求，并将其映射到指定的URL路径。
     * 该方法用于删除指定ID的产品信息。
     * @param ids 要删除的产品ID数组
     * 循环遍历传入的ID数组，逐个删除对应的产品信息。
     */
    @DeleteMapping
    public Result dele(int[] ids) {
        for (int i = 0; i < ids.length; i++) {
            int index = ids[i];
            System.out.println(index+ "================================");
            productService.removeById(index);
        }
        return  Result.success(null, "删除成功");
    }


    /**
     PostMapping注释表示该方法处理HTTP POST请求，并将其映射到指定的URL路径。
     该方法用于添加新的产品信息。
     @param product 要添加的产品信息
     调用productService的save方法将产品信息保存到数据库中，并返回添加成功的结果。 */
    @PostMapping("/add")
    public Result add(@RequestBody Product product) {
        productService.save(product);
        return Result.success(null, "添加成功");
    }


    /**
     GetMapping注释表示该方法处理HTTP GET请求，并将其映射到指定的URL路径。
     该方法用于分页查询产品信息。
     @param page 页码
     @param pageSize 每页记录数
     通过调用productService的page方法进行分页查询，并将查询结果封装成PageResult返回。
     最后返回包含总记录数和产品列表的成功结果。 */
    @GetMapping("/page")
    public  Result find( Integer page,Integer pageSize){
        IPage pageInfo  = new Page(page, pageSize);

        IPage result = productService.page(pageInfo);

        long total = result.getTotal();
        List records = result.getRecords();

        return  Result.success(new PageResult(total, records), "分页查询成功");
    }


    @PutMapping()
    public Result updateProduct(@RequestBody Product product){
        System.out.println(product);
        productService.updateById(product);
        return Result.success(null, "修改成功");
    }


    @GetMapping("/{id}")
    public Result findbyId(@PathVariable("id") int productId){
        Product byId = productService.getById(productId);
        return Result.success(byId, "查询成功");
    }


}

